"""
问题：Python 创建大量对象时如何节省内存

    答
    __slots__是一个特殊的内置类属性，它可以用于定义类的属性名称的集合。一旦在类中定义了__slots__属性，
    Python将限制该类的实例只能拥有__slots__中定义的属性。这有助于减少每个实例的内存消耗，提高属性访问速度，同时也可以防止意外添加新属性。
"""


class SlotTest(object):
    __slots__ = ('val1', 'val2')

    def __init__(self, val1, val2):
        self.val1 = val1
        self.val2 = val2

    def set_val3(self, val3):
        self.val3 = val3


if __name__ == '__main__':
    o1 = SlotTest('a', 'b')
    try:
        o1.set_val3('val3')
    except Exception as e:
        print('Error: ', str(e))
    try:
        print(o1.__dict__)
    except AttributeError as e:
        print('Error: ', str(e))
